Java 001:通过OPC UA协议连接KepServerEx进行读、写、订阅操作 您所在的位置:网站首页 plc opcua设置匿名访问 Java 001:通过OPC UA协议连接KepServerEx进行读、写、订阅操作

Java 001:通过OPC UA协议连接KepServerEx进行读、写、订阅操作

2024-06-30 14:51| 来源: 网络整理| 查看: 265

参考前辈的踩坑记录https://blog.csdn.net/weixin_45411740/article/details/124275985?spm=1001.2014.3001.5502,我Hyb在2023-3-15调通了自己的JavaOpcUaDemo。具体Java代码和KepServerEX延时补丁都在资源中。

第1步:安装激活KepServer,补丁在资源中,不详述。

第2步:在KepServer中做OpcUa配置。

2.1 先看桌面右下角有没EX图标

2.2 如果没有EX图标,要去开始菜单中找到KEPServerEX 6 Administration,点击打开它后,桌面右下角就会出现EX图标:

2.3 右键点击EX图标,选择“OPC UA 配置”,设置过程看这个动图:(一定要关注动图中192.168.10.60这个ip及端口的设置,它要与你代码中一致!)

第3步:在KepServer中设置用户名密码。

3.1 再一次点桌面右下角的EX图标,选择“设置”,点“用户管理器”,在Administrators右键选择“添加用户”。见图操作:

第4步:在KepServer中设置opcua匿名账户登录。

在KepServerEX界面,在“项目”右键,选择“属性”,选择“OPC UA”。在“客户端会话”、“允许匿名登录”中,选择“是”。如图:

以上KepServerEX设置完成后,就可以构建Java项目了。

第5步:首先搭建环境。下载Eclipse、配置Maven

上图分别对应:

5.1 从Maven下载安装包:apache-maven-3.9.0-bin.zip

5.2 配置Maven本地仓库在:conf/settings.xml

${MAVEN_HOME}/repoHyb

5.3 配置Maven镜像:从阿里云Maven镜像同步和下载jar

nexus-aliyun central Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public

5.4 在Eclipse中设置Maven安装路径

5.5 在Eclipse中设置Maven的配置文件

第6步:以上环境搭建好后,就可以正式coding了。

6.1 在eclipse中创建maven项目,并在pom.xml中配置Milo客户端依赖:

org.eclipse.milo sdk-client 0.6.3 org.eclipse.milo sdk-server 0.6.3

Milo是Eclipse旗下的一个物联网的项目,是一个高性能的OPC UA栈,提供了一组客户端和服务端的API,支持对实时数据的访问,监控,报警,订阅数据,支持事件,历史数据访问,和数据建模。官网https://projects.eclipse.org/projects/iot.milo

在Milo中大量的采用了java 8的新特性CompletableFuture来进行异步操作,Milo中有大量的操作都是直接返回CompletableFuture对象,所以JDK的版本必须要8.0,对CompletableFuture不太熟悉的可以先去了解CompletableFuture的相关概念在来看Milo的官方例子会轻松很多。

6.2 然后就是java代码,只有一个类TestOpcUA.java,代码全部在这一个java文件中。直接复制到你java文件中,不用再导入任何类,加个包名,直接可以运行。

import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicInteger; import org.eclipse.milo.opcua.sdk.client.OpcUaClient; import org.eclipse.milo.opcua.sdk.client.api.identity.AnonymousProvider; import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscription; import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscriptionManager; import org.eclipse.milo.opcua.sdk.client.nodes.UaNode; import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem; import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedSubscription; import org.eclipse.milo.opcua.stack.core.AttributeId; import org.eclipse.milo.opcua.stack.core.Identifiers; import org.eclipse.milo.opcua.stack.core.UaException; import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy; import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue; import org.eclipse.milo.opcua.stack.core.types.builtin.DateTime; import org.eclipse.milo.opcua.stack.core.types.builtin.LocalizedText; import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId; import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode; import org.eclipse.milo.opcua.stack.core.types.builtin.Variant; import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger; import org.eclipse.milo.opcua.stack.core.types.enumerated.MonitoringMode; import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn; import org.eclipse.milo.opcua.stack.core.types.structured.MonitoredItemCreateRequest; import org.eclipse.milo.opcua.stack.core.types.structured.MonitoringParameters; import org.eclipse.milo.opcua.stack.core.types.structured.ReadValueId; public class TestOpcUA { private final static String endPointUrl = "opc.tcp://192.168.10.60:49320"; /** * 创建OPC UA客户端 */ private static OpcUaClient createClient() throws Exception { //opc ua服务端地址 Path securityTempDir = Paths.get(System.getProperty("java.io.tmpdir"), "security"); Files.createDirectories(securityTempDir); if (!Files.exists(securityTempDir)) { throw new Exception("unable to create security dir: " + securityTempDir); } return OpcUaClient.create(endPointUrl, endpoints -> endpoints.stream().filter(e -> e.getSecurityPolicyUri().equals(SecurityPolicy.None.getUri())).findFirst(), configBuilder -> configBuilder.setApplicationName(LocalizedText.english("eclipse milo opc-ua client")).setApplicationUri("urn:eclipse:milo:examples:client") //访问方式 .setIdentityProvider(new AnonymousProvider()).setRequestTimeout(UInteger.valueOf(500)).build()); } /** * 遍历树形节点 * * @param client OPC UA客户端 * @param uaNode 节点 * @throws Exception */ private static void browseNode(OpcUaClient client, UaNode uaNode) throws Exception { List


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有